package com.zjsru.plan2024.oneday;

/**
 * 3258. 统计满足 K 约束的子字符串数量 I
 *
 * @Author: cookLee
 * @Date: 2024-11-12
 */
public class CountKConstraintSubstrings {

    /**
     * 主
     * \
     * 字符串中 0 的数量最多为 k。
     * 字符串中 1 的数量最多为 k。
     * \
     * 输入：s = "10101", k = 1
     * <p>
     * 输出：12
     * <p>
     * 解释：
     * <p>
     * s 的所有子字符串中，除了 "1010"、"10101" 和 "0101" 外，其余子字符串都满足 k 约束。
     * \
     * 输入：s = "1010101", k = 2
     * 输出：25
     * 解释：
     * s 的所有子字符串中，除了长度大于 5 的子字符串外，其余子字符串都满足 k 约束。
     *
     * @param args args
     */
    public static void main(String[] args) {
        CountKConstraintSubstrings countKConstraintSubstrings = new CountKConstraintSubstrings();
        String s = "10101";
        int k = 1;
        System.out.println(countKConstraintSubstrings.countKConstraintSubstrings(s, k));

    }

    /**
     * count kconstraint子字符串
     * count kconstraint子字符串
     *
     * @param s s
     * @param k k
     * @return int
     */
    public int countKConstraintSubstrings(String s, int k) {
        int len = s.length();
        int ans = 0;
        for (int i = 0; i < len; i++) {
            //记录1和2的数量
            int[] count = new int[2];
            for (int j = i; j < len; j++) {
                //统计1和2的数量
                count[s.charAt(j) - '0']++;
                //判断是否满足k约束
                if (count[0] <= k || count[1] <= k) {
                    ans++;
                }
            }
        }
        return ans;
    }

}
